/**
 * @Author: Craft
 * @Date: 2024-08-18
 * @Description: 暗黑破坏神2重置版数据服务
 */

// 模拟数据
const mockItems = [
  {
    _id: 'item001',
    name: '符文之语：谜团',
    type: '符文之语',
    subType: '盔甲',
    quality: '符文之语',
    levelRequire: 67,
    runes: ['塔尔', '沙尔', '托尔'],
    baseItem: '任意盔甲',
    attributes: [
      '+2 所有技能',
      '+25% 快速施放法术',
      '+25% 跑步/行走速度',
      '+10 精力',
      '伤害减少 8%',
      '魔法伤害减少 8%',
      '所有抗性 +60',
      '装备要求 -100%'
    ],
    image: '/static/items/enigma.png',
    viewCount: 1245,
    favCount: 356
  },
  {
    _id: 'item002',
    name: '符文之语：无限',
    type: '符文之语',
    subType: '武器',
    quality: '符文之语',
    levelRequire: 63,
    runes: ['贝尔', '伊司特', '贝尔', '伊司特'],
    baseItem: '任意长柄武器',
    attributes: [
      '+2 所有技能',
      '+255-275% 伤害力 (可变)',
      '-45-55% 敌人防御 (可变)',
      '+9-14 冰冷伤害',
      '+1 冥想 (仅限圣骑士)',
      '50% 对不死生物伤害',
      '+50 攻击命中率对不死生物',
      '防止怪物治疗',
      '+5-10 所有属性 (可变)',
      '+1-2 精力 (可变)',
      '30% 更好的机会获得魔法装备',
      '装备要求 -20%'
    ],
    image: '/static/items/infinity.png',
    viewCount: 987,
    favCount: 245
  },
  {
    _id: 'item003',
    name: '塔拉夏的守护',
    type: '护身符',
    quality: '暗金',
    levelRequire: 65,
    attributes: [
      '+2 所有技能',
      '+20% 快速施放法术',
      '+30% 跑步/行走速度',
      '+20 所有属性',
      '所有抗性 +30',
      '伤害减少 10%',
      '魔法伤害减少 10%'
    ],
    image: '/static/items/tal_rasha_amulet.png',
    viewCount: 1056,
    favCount: 289
  }
];

const mockBuilds = [
  {
    _id: 'build001',
    title: '闪电法师BD',
    class: '法师',
    author: '暗黑玩家001',
    createDate: '2024-08-01',
    content: '这是一个专注于闪电技能的法师BD，主要使用闪电和连锁闪电技能。核心装备包括塔拉夏套装和符文之语：谜团。\n\n技能点分配：\n- 闪电: 20点\n- 连锁闪电: 20点\n- 闪电掌握: 20点\n- 新星: 1点\n- 传送: 1点\n- 静态力场: 1点\n\n属性点分配：\n- 力量: 足够装备要求\n- 敏捷: 足够达到最大格挡率\n- 体力: 剩余全部\n- 精力: 基础点数',
    items: ['item001', 'item003'],
    viewCount: 567,
    favCount: 123
  },
  {
    _id: 'build002',
    title: '旋风野蛮人BD',
    class: '野蛮人',
    author: '暗黑玩家002',
    createDate: '2024-08-05',
    content: '这是一个基于旋风技能的野蛮人BD，使用双手武器进行高伤害输出。核心装备包括符文之语：无限和各种提高攻击速度的装备。\n\n技能点分配：\n- 旋风: 20点\n- 战斗专精: 20点\n- 战斗命令: 20点\n- 战斗呐喊: 1点\n- 自然抵抗: 剩余点数\n\n属性点分配：\n- 力量: 足够装备要求\n- 敏捷: 足够达到最大攻击速度\n- 体力: 剩余全部\n- 精力: 基础点数',
    items: ['item002'],
    viewCount: 432,
    favCount: 98
  },
  {
    _id: 'build003',
    title: '锤子圣骑士BD',
    class: '圣骑士',
    author: '暗黑玩家003',
    createDate: '2024-08-10',
    content: '这是一个基于祝福之锤技能的圣骑士BD，使用单手武器和盾牌进行高伤害输出和高生存能力。核心装备包括符文之语：谜团和各种提高施法速度的装备。\n\n技能点分配：\n- 祝福之锤: 20点\n- 专注: 20点\n- 神圣之盾: 20点\n- 救赎: 1点\n- 神圣冲击: 1点\n- 传送: 1点\n\n属性点分配：\n- 力量: 足够装备要求\n- 敏捷: 足够达到最大格挡率\n- 体力: 剩余全部\n- 精力: 基础点数',
    items: ['item001'],
    viewCount: 789,
    favCount: 156
  }
];

// 数据缓存
let cachedItems = null;
let cachedBuilds = null;

/**
 * 加载数据
 * @param {string} dataType - 数据类型: 'items' | 'builds'
 * @returns {Promise<Array>} - 数据数组
 */
export async function loadData(dataType) {
  // 检查缓存
  if (dataType === 'items' && cachedItems) {
    return cachedItems;
  }
  
  if (dataType === 'builds' && cachedBuilds) {
    return cachedBuilds;
  }
  
  // 尝试从本地存储获取
  try {
    const storageKey = `d2r_${dataType}`;
    const storedData = uni.getStorageSync(storageKey);
    
    if (storedData) {
      if (dataType === 'items') {
        cachedItems = JSON.parse(storedData);
        return cachedItems;
      } else if (dataType === 'builds') {
        cachedBuilds = JSON.parse(storedData);
        return cachedBuilds;
      }
    }
  } catch (e) {
    console.error('从本地存储获取数据失败', e);
  }
  
  // 使用模拟数据
  let data = [];
  
  if (dataType === 'items') {
    data = mockItems;
    cachedItems = data;
  } else if (dataType === 'builds') {
    data = mockBuilds;
    cachedBuilds = data;
  }
  
  // 保存到本地存储
  try {
    const storageKey = `d2r_${dataType}`;
    uni.setStorageSync(storageKey, JSON.stringify(data));
  } catch (e) {
    console.error('保存数据到本地存储失败', e);
  }
  
  return data;
}

/**
 * 更新收藏状态
 * @param {string} dataType - 数据类型: 'items' | 'builds'
 * @param {string} id - 数据ID
 * @param {boolean} isFavorite - 是否收藏
 * @returns {Promise<boolean>} - 是否成功
 */
export async function updateFavorite(dataType, id, isFavorite) {
  try {
    // 加载数据
    const data = await loadData(dataType);
    
    // 查找项目
    const item = data.find(item => item._id === id);
    
    if (item) {
      // 更新收藏计数
      if (isFavorite) {
        item.favCount = (item.favCount || 0) + 1;
      } else {
        item.favCount = Math.max(0, (item.favCount || 0) - 1);
      }
      
      // 更新缓存
      if (dataType === 'items') {
        cachedItems = data;
      } else if (dataType === 'builds') {
        cachedBuilds = data;
      }
      
      // 保存到本地存储
      const storageKey = `d2r_${dataType}`;
      uni.setStorageSync(storageKey, JSON.stringify(data));
      
      return true;
    }
    
    return false;
  } catch (e) {
    console.error('更新收藏状态失败', e);
    return false;
  }
}